package com.rightrule.rule.executor.node;

import com.rightrule.rule.executor.RuntimeContext;
import com.rightrule.rule.response.NodeExecutionResponse;
import lombok.Data;

import java.util.List;
import java.util.Map;

@Data
public abstract class BaseNode {

    /**
     * 自增主键，规则流节点id
     */
    private Long nodeId;


    /**
     * 节点类型,规则流节点类型:0 开始节点；100结束节点；10执行规则节点，20判断，30合并，40嵌套规则流节点。
     */
    private Integer nodeType;

    /**
     * 节点名称
     */
    private String nodeName;

    /**
     * 下一个节点有哪些,key为判断表达式，当map元素为1时，key定义为一个default字符串即可
     */
    private List<NextNode> nextNodes;

    /**
     * 节点执行抽象方法
     *
     * @param context
     * @param variableMap
     * @return
     */
    public abstract NodeExecutionResponse execute(RuntimeContext context, Map<String, Object> variableMap);
}
